#include <stdio.h>

int main(int argc, char *argv[])
{
    static int x __asm__ ("x") = 10;
    int y;
    
    printf("x=%p, y=0x%x\n", &x, y);
    printf("x=%d, y=%d\n", x, y);

    x = atoi(argv[1]);
    __asm__("movl $x, %0"  // 這邊的%0代表後面出現的第一個register，即y。
            : "=r" (y));

    // output operand前一定要有個"="表示這個constraint是write-only，
    //  "="叫constraint modifier。
    // input output operands後一定要跟著相對應的C 變數的參數，
    // 這是給asm的參數。
    printf("x=%p, y=0x%x\n", &x, y);
    printf("x=%d, y=%d\n", x, y);
    return 0;
}
